select imp.progressivo_voce,
case when imp.tipo_opzione = 'IMP4' then '' else imp.tipo_con end tipo_contratto,
imp.tipo_opzione,sum(imp.imponibile_t),sum(qua.quantita_t)



from (
select codice_bolletta,progressivo_voce,tipo_con,tipo_opzione,
sum(imponibile) imponibile_t
from ( 

SELECT tk.codice_bolletta,tk.progressivo_voce,tk.DESCRIZIONE_COMPONENTE,tk.TARIFFA_COMPONENTE,tk.QUANTITA_SCAGLIONE,

CASE WHEN TK.RAGGRUPP_RIEPFATT  LIKE '%DOMESTIC%' THEN 'DOM' ELSE 
     CASE WHEN TK.RAGGRUPP_RIEPFATT LIKE '%MIN%' AND  TK.RAGGRUPP_RIEPFATT LIKE '%1,5%' THEN '<1,5 Kw' ELSE '>1,5 Kw' END END TIPO_CON,

 CASE WHEN TK.DESCRIZIONE_COMPONENTE = 'ENERGIA NETTA A3'
           or tk.DESCRIZIONE_COMPONENTE = 'ENERGIA NETTA T3'
           or tk.DESCRIZIONE_COMPONENTE = 'TRAS'
           or tk.DESCRIZIONE_COMPONENTE = 'MIS3' THEN 'IMP1' ELSE
           CASE WHEN tk.DESCRIZIONE_COMPONENTE = 'ENERGIA NETTA T2' THEN 'IMP2' ELSE
                CASE WHEN tk.DESCRIZIONE_COMPONENTE = 'QUOTA CLIENTE NETTA'
                          or tk.DESCRIZIONE_COMPONENTE = 'MIS1' THEN 'IMP3' ELSE 
                          
                                                  'IMP4'
                END
           END
 END TIPO_OPZIONE ,
 CASE WHEN ( tk.progressivo_voce = '010'

or tk.progressivo_voce = '110'
or tk.progressivo_voce = '120'

) THEN 
           TK.quantita_scaglione*TK.TARIFFA_componente else tk.imponibile_iva END AS IMPONIBILE
 
from  ut_asm.tmpmark@asmdw tk
where 

 tk.codice_ruolo_fatturato >= ^da ruolo nro ;N;Numerico^^
and tk.codice_ruolo_fatturato <= ^a ruolo nro;N;Numerico^^
and tk.anno_esercizio = ^anno esercizio;N;Numerico^^
    
and (
     tk.progressivo_voce = '030'
or tk.progressivo_voce = 'ALLACCIO'
or tk.progressivo_voce = 'DIRFISTR'
or tk.progressivo_voce = 'DISTACCO'
or tk.progressivo_voce = 'DRIFISS'
or tk.progressivo_voce = 'DRIFISST'
or tk.progressivo_voce = 'QDISPRED'
or tk.progressivo_voce = 'QPOTENZA'
or tk.progressivo_voce = 'SPESVER'
or tk.progressivo_voce = 'SPOSTCON'
or tk.progressivo_voce = 'TENSIONE'
or tk.progressivo_voce = '320'
or tk.progressivo_voce = '420'
or tk.progressivo_voce = 'BOLLO'
or tk.progressivo_voce = 'BOLLOVIR'
or tk.progressivo_voce = 'SPESELEG'

or

(tk.PROGRESSIVO_VOCE = '010' AND       (tk.DESCRIZIONE_COMPONENTE = 'ENERGIA NETTA A3'
                                            or tk.DESCRIZIONE_COMPONENTE = 'ENERGIA NETTA T3'
                                            or tk.DESCRIZIONE_COMPONENTE = 'TRAS'
                                            or tk.DESCRIZIONE_COMPONENTE = 'MIS3'
                                             or TRIM(tk.DESCRIZIONE_COMPONENTE) = 'A2'
                                            or TRIM(tk.DESCRIZIONE_COMPONENTE) = 'A3'
                                            or TRIM(tk.DESCRIZIONE_COMPONENTE) = 'A4'
                                            or TRIM(tk.DESCRIZIONE_COMPONENTE) = 'A5'
                                            or TRIM(tk.DESCRIZIONE_COMPONENTE) = 'AS'
                                            or TRIM(tk.DESCRIZIONE_COMPONENTE) = 'A6'
                                            or TRIM(tk.DESCRIZIONE_COMPONENTE) = 'UC3'
                                            or TRIM(tk.DESCRIZIONE_COMPONENTE) = 'UC4'
                                            or TRIM(tk.DESCRIZIONE_COMPONENTE) = 'UC6'
                                            or TRIM(tk.DESCRIZIONE_COMPONENTE) = 'MCT'))
                                            
   OR (TK.PROGRESSIVO_VOCE = '110' AND     (  tk.DESCRIZIONE_COMPONENTE = 'ENERGIA NETTA T2'
                                             or TRIM(tk.DESCRIZIONE_COMPONENTE) = 'A6'
                                            or TRIM(tk.DESCRIZIONE_COMPONENTE) = 'UC6'))
   
   OR (tk.PROGRESSIVO_VOCE = '120' AND       (tk.DESCRIZIONE_COMPONENTE = 'QUOTA CLIENTE NETTA'
                                            or tk.DESCRIZIONE_COMPONENTE = 'MIS1'
                                            or TRIM(tk.DESCRIZIONE_COMPONENTE) = 'A2'
                                            or TRIM(tk.DESCRIZIONE_COMPONENTE) = 'A3'
                                            or TRIM(tk.DESCRIZIONE_COMPONENTE) = 'A5'
                                            or TRIM(tk.DESCRIZIONE_COMPONENTE) = 'A6'
                                            or TRIM(tk.DESCRIZIONE_COMPONENTE) = 'UC6'))
)
--and codice_bolletta = 9078797
)
group by 
codice_bolletta,progressivo_voce,tipo_con,tipo_opzione) imp,





(select codice_bolletta,progressivo_voce,sum(quantita_scaglione) quantita_t from (
SELECT distinct tk.codice_bolletta,tk.progressivo_voce,
 tk.quantita_scaglione,
tk.progressivo_periodo,tk.progressivo_tariffazione,tk.progressivo_scaglione,tk.data_fine_periodo ,
tk.data_inizio_periodo,tk.codice_classe_addebito

 

from ut_asm.tmpmark@asmdw tk
where 

 tk.codice_ruolo_fatturato >= ^da ruolo nro ;N;Numerico;1^^
and tk.codice_ruolo_fatturato <= ^a ruolo nro;N;Numerico;2^^
and tk.anno_esercizio = ^anno esercizio;N;Numerico;3^^
and  (tk.PROGRESSIVO_VOCE = '010'
or tk.progressivo_voce = '030'
or tk.progressivo_voce = '110'
or tk.progressivo_voce = '120'
or tk.progressivo_voce = 'ALLACCIO'
or tk.progressivo_voce = 'DIRFISTR'
or tk.progressivo_voce = 'DISTACCO'
or tk.progressivo_voce = 'DRIFISS'
or tk.progressivo_voce = 'DRIFISST'
or tk.progressivo_voce = 'QDISPRED'
or tk.progressivo_voce = 'QPOTENZA'
or tk.progressivo_voce = 'REC010'
or tk.progressivo_voce = 'REC030'
or tk.progressivo_voce = 'SPESVER'
or tk.progressivo_voce = 'SPOSTCON'
or tk.progressivo_voce = 'TENSIONE'
or tk.progressivo_voce = 'BOLLO'
or tk.progressivo_voce = 'BOLLOVIR'
or tk.progressivo_voce = 'SPESELEG'
)
--and codice_bolletta = 9078797
 )
 group by 
 codice_bolletta,progressivo_voce)qua
 
 
 where qua.codice_bolletta = imp.codice_bolletta
 and qua.progressivo_voce = imp.progressivo_voce
 
 group by 


imp.progressivo_voce,
case when imp.tipo_opzione = 'IMP4' then '' else imp.tipo_con end,
imp.tipo_opzione

